Skip to content

fix: always reset isExecuting on query completion to prevent stuck tabs#548

Merged
datlechin merged 2 commits intomainfrom
fix/query-executing-stuck
Apr 1, 2026
Merged

fix: always reset isExecuting on query completion to prevent stuck tabs#548
datlechin merged 2 commits intomainfrom
fix/query-executing-stuck

Conversation

@datlechin
Copy link
Copy Markdown
Collaborator

Summary

  • Fixes tabs permanently stuck in "executing" state after rapid refresh or query cancellation, requiring a reconnect to recover
  • Root cause: isExecuting = false was guarded by capturedGeneration == queryGeneration — when a newer query superseded the current one, the stale query's cleanup was skipped entirely, leaving isExecuting = true forever
  • All subsequent runQuery() calls silently returned due to the guard !isExecuting check

Changes

Ensures isExecuting, currentQueryTask, and toolbarState are always reset on every query exit path:

Path File Fix
Single-statement success, stale generation MainContentCoordinator.swift Reset isExecuting before returning
Single-statement error, stale generation MainContentCoordinator.swift Reset isExecuting before generation guard
Single-statement cancellation MainContentCoordinator.swift Added missing currentQueryTask = nil
Multi-statement inner-loop cancellation +MultiStatement.swift Changed break to return with rollback + cleanup (was falling through to commitTransaction)
Multi-statement inner-loop stale generation +MultiStatement.swift Added cleanup before return
Multi-statement error, stale generation +MultiStatement.swift Reset isExecuting before generation guard
Multi-statement success, stale generation +MultiStatement.swift Reset isExecuting before generation guard

Test plan

  • Open a table tab, click Refresh (Cmd+R) rapidly multiple times — should never get stuck
  • Open a table, start a slow query, immediately Refresh again — old query should be cancelled, new one executes
  • Disconnect network mid-query, then Refresh — error alert should show, tab should not be stuck
  • Run multi-statement SQL, cancel mid-execution — transaction should rollback, tab should not be stuck

@datlechin datlechin merged commit 732a250 into main Apr 1, 2026
1 check passed
@datlechin datlechin deleted the fix/query-executing-stuck branch April 1, 2026 07:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant